테이블 A와 테이블 B의 같은 이름에 대해서 테이블 A의 직위와 부서명을 업데이트 하라 :: 오라클팁[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

오라클팁
[1]
등록일:2011-04-12 09:33:33 (0%)
작성자:
제목:테이블 A와 테이블 B의 같은 이름에 대해서 테이블 A의 직위와 부서명을 업데이트 하라

테이블 A (이름, 주소, 직위, 부서명)

테이블 B (이름, 직위, 부서코드)

테이블 C (부서코드, 부서명)

 

문제) 테이블 A와 테이블 B의 같은 이름에 대해서 테이블 A의 직위와 부서명을 업데이트 하라

 

update A

set       A.부서명 = (select C.부서명

                              from    B, C

                              where A.이름 = B.이름

                              and     B.부서코드 = C.부서코드

                             ),

            A.직위 = ( select B.직위

                            from   B

                            where A.이름 = B.이름

                          )

where  A.이름 = B.이름

 

위와 같이 했는데요...

 

1. "단일행 부속쿼리에 2개 이상의 값을 리턴했습니다.." 에러가 나요...

2. 좀 간단한 쿼리는 없을까요?

 

re: 오라클 update 쿼리 문의드립니다.

 

1.  "단일행 부속쿼리에 2개 이상의 값을 리턴했습니다.."

    --> 서브쿼리로 선언한 부분에서 두개 이상의 행을 반환하는 경우 에러가 발생합니다.

         (구체적으로 무슨 값으로 업데이트해야 할지 SQL 엔진이 판단할 수 없으므로)

    --> 서브쿼리로 선언한 부분을 쿼리하여 하나의 행만 나와야 합니다.

         (서브쿼리 내부에서 DISTINCT 를 쓰거나, 하나의 값만 나오도록 쿼리 조정이 필요합니다.)

 

2. 좀더 간단하게 구현해 보면, in-line view 로 선언하는 방법이 있습니다.

 

    UPDATE (SELECT A.부서명 as A_부서명,

                                C.부서명 as C_부서명,

                                A.직위    as A_직위,

                                B.직위    as B_직위

                       FROM A, B, C

                     WHERE A.이름 = B.이름

                          AND B.부서코드 = C.부서코드)

          SET  A_부서명 = C_부서명,

                  A_직위    = B_직위;

[본문링크] 테이블 A와 테이블 B의 같은 이름에 대해서 테이블 A의 직위와 부서명을 업데이트 하라
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=31605
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.